class Student:
  def __init__(self, name, score):
      self.name = name
      self.score = score


  def say_score(self,c):
      self.age = 18
      print(c)
      print("{0}的分数{1}".format(self.name, self.score))

def drink(self):
    print("I'm drinking with {0}".format(self.name))

Student.drink = drink

a = Student("张三",80)
a.say_score(69)
# 等价于 <=> 另一种调法
Student.say_score(a,68)


'''
dir(obj)可以获得对象的所有属性、方法
obj.__dict__对象的属性字典
pass 空语句
isinstance(对象,类型) ，判断"对象"是不是"指定类型" 或是类的实例
'''


print(a.__dict__)
print(dir(a))
print(type(a))
print(a.__class__)
print(a.__class__)
print(a.__class__.__base__)
print(isinstance(a, Student))


print(type(type))
print(isinstance(Student,type))

'''
类对象, 类也是一个对象，类对象用于存储类的元信息。class关键字创建类对象，它属于type类(像是一个图纸类)的实例。id: xx, type: 'type'
'''



'''
因为python语言是解释性语言，方法具有【动态性】; 通过类可以增加修改方法(必须self参数)，通过实例可以增加修改方法
'''

def sit():
    print("I'm sitting")

def say_score():
    print("I'm sing say")
a.sit = sit
a.say_score = say_score
a.sit()
a.say_score()
a.drink()


